package DataBase;



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author monitor
 */
import Beans.EmpresaConv;
import java.sql.*;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;

public class EmpresaConvDAO extends DAO {

    public List<EmpresaConv> ListarTodos() throws Exception {

        Conectar();
        String SQL = "SELECT * FROM empresa order by codigo";
        pstmt = con.prepareStatement(SQL);
        rs = pstmt.executeQuery();
        EmpresaConv ec = null;
        List<EmpresaConv> ListaEmpConv = new ArrayList<EmpresaConv>();
        while (rs.next()) {
            ec = new EmpresaConv();
            ec.setCodigo(rs.getString("codigo"));
            ec.setNome(rs.getString("nome"));
            ec.setEndereco(rs.getString("endereco"));
            ec.setStatus(rs.getString("status"));
            ListaEmpConv.add(ec);
        }
        Desconectar();
        return ListaEmpConv;
    }

    public ArrayList<EmpresaConv> ListarTodos(String valor) throws Exception {

        Conectar();
        //String SQL = "SELECT codigo, nome, endereco, status FROM empresa where nome like '%" + valor + "%' ";
        String SQL = "SELECT codigo, nome, endereco, status FROM empresa where status = 'ativado' and nome like '%" + valor + "%' ";
        pstmt = con.prepareStatement(SQL);
        rs = pstmt.executeQuery();
        EmpresaConv ec = null;
        ArrayList<EmpresaConv> lista = new ArrayList<EmpresaConv>();
        while (rs.next()) {
            ec = new EmpresaConv();

            ec.setCodigo(rs.getString("codigo"));
            ec.setNome(rs.getString("nome"));
            ec.setEndereco(rs.getString("endereco"));
            ec.setStatus(rs.getString("status"));
            lista.add(ec);

        }
        Desconectar();
        return lista;



    }

    
    public EmpresaConv busca(String busca) throws Exception {
        Conectar();
        EmpresaConv ec = null;
      /*  String SQL_verificar = "select nome from empresa where nome like '%" + busca + "%'";
        //select nome from produto_rest where nome= '" + busca + "'";
        Statement verifica = con.createStatement();
        ResultSet rs = verifica.executeQuery(SQL_verificar);
        if (!rs.next()) {
            JOptionPane.showMessageDialog(null, "Empresa não Cadastrado", "Erro na Pesquisa", JOptionPane.INFORMATION_MESSAGE);
            Desconectar();
            return ec;
        } else {    */
            String SQL = "SELECT * FROM empresa WHERE  nome like '%" + busca + "%'";
            //pstmt = con.prepareStatement(SQL);
            //pstmt.setString(1, busca);
            Statement st= con.createStatement();
          //  pstmt.setString(2, busca);
            rs=st.executeQuery(SQL);
            //rs = pstmt.executeQuery();
            //EmpresaConv ec = null;
            while (rs.next()) {
                ec = new EmpresaConv();
                ec.setCodigo(rs.getString("codigo"));
                ec.setNome(rs.getString("nome"));
                ec.setEndereco(rs.getString("endereco"));
                ec.setStatus(rs.getString("status"));

            }
            Desconectar();
            return ec;
       // }
    }

    public EmpresaConv pesquisa(String pesquisa) {
        try {
            Conectar();
            String SQL = "SELECT * FROM empresa where nome=?";
            pstmt = con.prepareStatement(SQL);
            System.out.println(pesquisa);
            pstmt.setString(1, pesquisa);
            //pstmt.setString(2, pesquisa);
            rs = pstmt.executeQuery();
            EmpresaConv ec = null;
 
            if (rs.next()) {
           
                ec = new EmpresaConv();

                ec.setCodigo(rs.getString("codigo"));
                ec.setNome(rs.getString("nome"));
                ec.setEndereco(rs.getString("endereco"));
                ec.setStatus(rs.getString("status"));
                
                Desconectar();
                return ec;
            } else {
                ec = new EmpresaConv();
                ec.setNome("invalido");
                return ec;

            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Exceção"+ex.getMessage());
            EmpresaConv ec = new EmpresaConv();
            ec.setNome("invalido");
            return ec;
        }
    }

    
    public boolean cadastroEmpConv(EmpresaConv ec) {
        try {
            Conectar();
/*            String SQL_verificar = "select nome from empresa where nome= '" + ec.getNome() + "'";
            Statement verifica = con.createStatement();
            ResultSet rs = verifica.executeQuery(SQL_verificar);
  */          
            String SQL_verificar = "select nome, status from empresa where nome= '" + ec.getNome() + "'";
            Statement verifica = con.createStatement();
            ResultSet rs = verifica.executeQuery(SQL_verificar);
                  
            if (rs.next()) {
                if (rs.getObject("status").toString().equals("desativado"))
                    JOptionPane.showMessageDialog(null, "Empresa já Cadastrado e Desativada \n Para Ativa-la, var para o Menu Alterar", "Erro no Cadastro", JOptionPane.INFORMATION_MESSAGE);
                else
                    JOptionPane.showMessageDialog(null, "Empresa já Cadastrada", "Erro no Cadastro", JOptionPane.INFORMATION_MESSAGE);
                Desconectar();
                return false;
            
            
/*            if (rs.next()) {
                JOptionPane.showMessageDialog(null, "Empresa já Cadastrado", "Erro no Cadastro", JOptionPane.INFORMATION_MESSAGE);
                Desconectar();
                return false;
                 * 
                 */
            } else {
                //String SQL = "INSERT INTO produto_rest (nome, status, tipo) VALUES('"+p.getNome()+"','" + p.getStatus() +"','"+p.getTipo()+"')";
                String SQL = "INSERT INTO empresa (nome, endereco, status) VALUES('" + ec.getNome() + "','" + ec.getEndereco() + "','" + ec.getStatus() + "')";
                Statement s = con.createStatement();
                s.executeUpdate(SQL);
                //System.out.println("ola");
                Desconectar();
                return true;
            }
        } catch (Exception ex) {
            System.out.println("Erro " + ex);
            return false;
        }

    }

    public void remEmpConv(String nomEmp) throws Exception {
        try {
            Conectar();
            String SQL_verificar = "select nome from empresa where nome= '" + nomEmp + "'";
            Statement verifica = con.createStatement();
            ResultSet rs = verifica.executeQuery(SQL_verificar);
            if (!rs.next()) {
                JOptionPane.showMessageDialog(null, "Empresa Inexistente", "Erro na Exclusão", JOptionPane.INFORMATION_MESSAGE);
                Desconectar();
            } else {
                String SQL = "select*from  empresa where nome=?";
                pstmt = con.prepareStatement(SQL);
                pstmt.setString(1, nomEmp);
                rs = pstmt.executeQuery();
                if (rs.next()) {
                    //SQL = ("delete from empresa where nome=?");
                    SQL = "update empresa set status='desativado' where nome=?";
                    pstmt = con.prepareStatement(SQL);
                    pstmt.setString(1, nomEmp);
                    pstmt.executeUpdate();
                    JOptionPane.showMessageDialog(null, "Empresa Removida com Sucesso ");
                    Desconectar();
                } else {
                    JOptionPane.showMessageDialog(null, "Erro na Remocao da Empresa  ");
                }
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "" + ex, "Erro na Remoção da Empresa", JOptionPane.ERROR_MESSAGE);
        }
    }

    public boolean alterarEmpConv(EmpresaConv ec, String nome) {
        try {
            Conectar();
/*            String SQL_verificar = "select nome from empresa where nome= '" + ec.getNome() + "'";
            Statement verifica = con.createStatement();
            ResultSet rs = verifica.executeQuery(SQL_verificar);
            if (rs.next()) {
                JOptionPane.showMessageDialog(null, "Já existe Empresa com este nome", "Erro na Alteração", JOptionPane.INFORMATION_MESSAGE);
                Desconectar();
                return false;
            } else {*/
                String SQL = "update empresa set nome = '" + ec.getNome() + "', endereco = '" + ec.getEndereco() + "' , status = '" + ec.getStatus() + "' where nome = '" + nome + "'";
                Statement s = con.createStatement();
                s.executeUpdate(SQL);
                //System.out.println("ola");
                Desconectar();
                return true;
//            }
        } catch (SQLException ex) {
            System.out.println("Erro " + ex);
            return false;
        }

    }
}